const db = require('../db/index')
const bcrypt = require('bcryptjs')
const JWT = require('../util/JWT')
// 注册用户的处理函数
exports.regUser = (req, res) => {
    const userInfo = req.body

    let sql = 'select * from ev_users where username=?;'
    db.query(sql, [userInfo.username], (error, results) => {
        if (error) return res.send(error)
        if (results.length > 0) return res.cc('用户名被占用，请更换其它用户名')
        // 对用户的密码,进行 bcrype 加密，返回值是加密之后的密码字符串
        userInfo.password = bcrypt.hashSync(userInfo.password, 10)
        sql = 'insert into ev_users set ?;'
        db.query(sql, { ...userInfo }, (err, result) => {
            if (err) return res.cc(err)
            // SQL 语句执行成功，但影响行数不为 1
            if (result.affectedRows !== 1) {
                return res.cc('注册用户失败，请稍后再试！')
            }
            res.cc('注册成功',0)
        })
    })
}

// 登录的处理函数
exports.login = (req, res) => {
    const userInfo = req.body

    const sql = 'select * from ev_users where username=?;'
    db.query(sql,userInfo.username,(error,results)=>{
        if(error) return res.cc(error)
        if(results.length !== 1) return res.cc('登录失败！')
        const compareResult = bcrypt.compareSync(userInfo.password,results[0].password);
        if(!compareResult) return res.cc('用户名或密码错误！')
        const user = {...results[0],password:'',user_pic:''}
        const token = JWT.sign(user,'1h')
        res.send({
            status:0,
            message:'登陆成功！',
            token: 'Bearer ' + token
        })
    })
}